package com.tabnet.servlet;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.tabnet.beans.personnes.Fournisseur;
import com.tabnet.dao.AdresseDAOImpl;
import com.tabnet.dao.DAOAdresse;
import com.tabnet.dao.DAOException;
import com.tabnet.dao.DAOFactory;
import com.tabnet.dao.DAOFournisseur;
import com.tabnet.dao.FournisseurDAOImpl;
import com.tabnet.form.CreationFournisseurForm;

public class CreationFournisseur extends HttpServlet {

	public static final String CONF_DAO_FACTORY 	= "DAOFactory";
    public static final String ATT_FOURNISSEUR  	= "fournisseur";
    public static final String ATT_FORM        		= "form";
    public static final String SESSION_FOURNISSEURS = "fournisseurs";

    public static final String VUE_SUCCES      		= "/admin/listerFournisseurs.jsp";
    public static final String VUE_FORM        		= "/admin/creerFournisseur.jsp";
    
    private DAOFournisseur fournDao;

    public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        /* À la réception d'une requête GET, simple affichage du formulaire */
        this.getServletContext().getRequestDispatcher( VUE_FORM ).forward( request, response );
    }

    public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
    	try {
			this.fournDao = new FournisseurDAOImpl( DAOFactory.getInstance() );
		} catch (DAOException e1) {
			e1.printStackTrace();
		}
    	
    	/* Préparation de l'objet formulaire */
    	CreationFournisseurForm form = new CreationFournisseurForm(fournDao);

        /* Traitement de la requête et récupération du bean en résultant */
        Fournisseur fourn = form.creerFournisseur( request );
        /* Ajout du bean et de l'objet métier à l'objet requête */
        request.setAttribute( ATT_FORM, form );
        request.setAttribute( ATT_FOURNISSEUR, fourn );

        /* Si aucune erreur */
        if ( form.getErreurs().isEmpty() ) {
            /* Alors récupération de la map des fournisseurs dans la session */
            HttpSession session = request.getSession();
            
            Map<String, Fournisseur> lesFournisseurs = (HashMap<String, Fournisseur>) session.getAttribute( SESSION_FOURNISSEURS );
            /* Si aucune map n'existe, alors initialisation d'une nouvelle map */
            if ( lesFournisseurs == null ) {
            	lesFournisseurs = new HashMap<String, Fournisseur>();
            }
            /* Puis ajout du client courant dans la map */
            lesFournisseurs.put( fourn.get_IdF(), fourn );
            
            /* Et enfin (ré)enregistrement de la map en session */
            session.setAttribute( SESSION_FOURNISSEURS, lesFournisseurs );

            /* Affichage de la fiche récapitulative */
            response.sendRedirect( request.getContextPath() + VUE_SUCCES );
        } else {
            /* Sinon, ré-affichage du formulaire de création avec les erreurs */
            this.getServletContext().getRequestDispatcher( VUE_FORM ).forward( request, response );
        }
    }
}
